package com.qdl.rym.util;

import java.util.ArrayList;
import java.util.List;

/**
 * @Description: ListUtil
 * @Author: ChenXueLi
 * @Date: 2019/3/5 10:18
 * 你是一段成熟的代码，要学会自己改bug
 */
public class ListUtil {

    /**
     * 单例模式
     */
    private static volatile ListUtil INSTANCE;
    private ListUtil() {}

    public static ListUtil getInstance() {
        synchronized (ListUtil.class){
            if (INSTANCE == null) {
                INSTANCE = new ListUtil();
            }
            return INSTANCE;
        }
    }

    /**
     * 拆分数组
     * @param list 原数组
     * @param index 每项长度
     * @param <E> 类型
     * @return
     */
    public <E> List<List<E>> groupList(List<E> list, int index) {
        List<List<E>> listGroup = new ArrayList<>();
        int listSize = list.size();
        // 子集合的长度
        int toIndex = index;
        for (int i = 0; i < list.size(); i += toIndex) {
            if (i + toIndex > listSize) {
                toIndex = listSize - i;
            }
            List<E> newList = list.subList(i, i + toIndex);
            listGroup.add(newList);
        }
        return listGroup;
    }

    /**
     * 字符串转数字list
     * @param content
     * @return
     */
    public List<Integer> stringToIntegerList(String content) {
        return this.stringToIntegerList(content, ",");
    }

    /**
     * 字符串转数字list
     * @param content
     * @param separate
     * @return
     */
    public List<Integer> stringToIntegerList(String content, String separate) {
        List<Integer> list = new ArrayList<>();
        String[] itemArray = content.split(separate);
        for(String item : itemArray) {
            if(RegexUtil.isInteger(item)) {
                list.add(Integer.valueOf(item));
            }
        }
        return list;
    }

    public static void main(String[] args) {
//        List<Object> list = new ArrayList<>();
//        list.add("1");
//        list.add("2");
//        list.add("3");
//        list.add("4");
//        list.add("5");
//        list.add("6");
//        list.add("7");
//        List<List<Object>> lists = ListUtil.getInstance().groupList(list, 4);
//        System.out.println("list:" + list.toString());
//        System.out.println(lists);
        System.err.println(ListUtil.getInstance().stringToIntegerList(",,666,6").toString());

    }

}

